import { httpRequest } from '@/utils/request'
import type {
  LoginRequest,
  LoginResponse,
  User,
  UpdateProfileRequest,
  ChangePasswordRequest
} from '@/types/auth'
import type { ApiResponse } from '@/types/common'

export const authApi = {
  /**
   * 用户登录
   * :param loginData: 登录表单数据
   * :return: 登录成功返回token和用户信息
   */
  login(loginData: LoginRequest): Promise<LoginResponse> {
    return httpRequest.post<LoginResponse>('/auth/login', loginData).then(response => {
      console.log('登录API响应:', response);
      return response;
    });
  },

  /**
   * 用户登出
   * :return: 登出成功确认
   */
  logout(): Promise<void> {
    return httpRequest.post<void>('/auth/logout')
  },

  /**
   * 刷新访问令牌
   * :return: 新的访问令牌
   */
  refreshToken(): Promise<{ token: string }> {
    return httpRequest.post<{ token: string }>('/auth/refresh')
  },

  /**
   * 获取当前用户信息
   * :return: 用户详细信息
   */
  getProfile(): Promise<User> {
    return httpRequest.get<User>('/auth/profile').then(response => {
      console.log('获取用户信息API响应:', response);
      return response;
    });
  },

  /**
   * 更新用户资料
   * :param profileData: 用户资料更新数据
   * :return: 更新成功确认
   */
  updateProfile(profileData: UpdateProfileRequest): Promise<void> {
    return httpRequest.put<void>('/auth/profile', profileData)
  },

  /**
   * 修改密码
   * :param passwordData: 密码修改数据
   * :return: 修改成功确认
   */
  changePassword(passwordData: ChangePasswordRequest): Promise<void> {
    return httpRequest.post<void>('/auth/change-password', passwordData)
  }
}